home *** CD-ROM | disk | FTP | other *** search
/ Celestin Apprentice 2 / Apprentice-Release2.iso / Source Code / C++ / Applications / Nuntius 1.2 / src / Nuntius / UPostArticleView.cp < prev    next >
Encoding:
Text File  |  1994-03-16  |  5.7 KB  |  215 lines  |  [TEXT/MPS ]

  1. // Copyright © 1992 Peter Speck, speck@dat.ruc.dk. All rights reserved.
  2. // UPostArticleView.cp
  3.  
  4. #include "UPostArticleView.h"
  5. #include "UPostArticleCmds.h"
  6. #include "UPrefsDatabase.h"
  7. #include "NetAsciiTools.h"
  8. #include "UThread.h"
  9.  
  10. #include <ErrorGlobals.h>
  11. #include <RsrcGlobals.h>
  12.  
  13. #pragma segment MyArticle
  14.  
  15. //==================================================================================================
  16. TEditArticleToPostDialogView::TEditArticleToPostDialogView()
  17. {
  18. }
  19.  
  20.  
  21. pascal void TEditArticleToPostDialogView::Initialize()
  22. {
  23.     inherited::Initialize();
  24.     fWindow = nil;
  25.     fSubjectET = fGroupsET = fDistributionET = nil;
  26.     fAddSignatureCB = nil;
  27.     fPostArticleInfo = nil;
  28. }
  29.  
  30. pascal void TEditArticleToPostDialogView::ReadFields(TStream *aStream)
  31. {
  32.     inherited::ReadFields(aStream);
  33. }
  34.  
  35. pascal void TEditArticleToPostDialogView::Free()
  36. {
  37.     fWindow = nil;
  38.     fPostArticleInfo = nil;
  39.     inherited::Free();
  40. }
  41.  
  42. pascal void TEditArticleToPostDialogView::DoPostCreate(TDocument *itsDocument)
  43. {
  44.     inherited::DoPostCreate(itsDocument);
  45.     fWindow = GetWindow();
  46.     fSubjectET = (TEditText*) FindSubView('Subj');
  47.     fGroupsET = (TEditText*) FindSubView('Grup');
  48.     fDistributionET = (TEditText*) FindSubView('Dist');
  49.     fAddSignatureCB = (TCheckBox*) FindSubView('AdSi');
  50. #if qDebug
  51.     if (!IsObject(fSubjectET))            ProgramBreak("Did not find subject ET");
  52.     if (!IsObject(fGroupsET))                ProgramBreak("Did not find groups ET");
  53.     if (!IsObject(fDistributionET))    ProgramBreak("Did not find distribution ET");
  54.     if (!IsObject(fAddSignatureCB))    ProgramBreak("Did not find addSignature CB");
  55. #endif
  56. }
  57.  
  58. void TEditArticleToPostDialogView::SetInfo(PPostArticleInfo *info)
  59. {
  60.     fPostArticleInfo = info;
  61.     fSubjectET->SetText(CStr255(fPostArticleInfo->fSubject), kRedraw);
  62.     fSubjectET->SetSelection(32000, 32000, kRedraw);
  63.     if (fPostArticleInfo->fNewsGroups == "net.general")
  64.         fGroupsET->SetText("net.followup", kRedraw);// RFC 850, pg 8
  65.     else
  66.         fGroupsET->SetText(fPostArticleInfo->fNewsGroups, kRedraw);
  67.     fDistributionET->SetText("world", kRedraw); //@@
  68.     fAddSignatureCB->SetState(fPostArticleInfo->fAddSignatureChoice, kRedraw);
  69. }
  70.  
  71. pascal void TEditArticleToPostDialogView::DoEvent(EventNumber eventNumber, 
  72.                                 TEventHandler *source, TEvent *event)
  73. {
  74.     if (eventNumber == mCancelHit || eventNumber == mCancelKey)
  75.     {
  76.         fPostArticleInfo->Cancel();
  77.         return;
  78.     }
  79.     if (source && source->fIdentifier == 'Edit')
  80.     {
  81.             DoEditKey();
  82.             return;
  83.     }
  84.     inherited::DoEvent(eventNumber, source, event);
  85. }
  86.  
  87. void TEditArticleToPostDialogView::DoEditKey()
  88. {
  89.     CStr255 s;
  90.     fSubjectET->GetText(s);
  91.     StripSpaces(s);
  92.     CheckHeader(fSubjectET, s, messageEmptySubject);
  93.     fPostArticleInfo->fSubject = s;
  94.  
  95.     fGroupsET->GetText(s);
  96.     StripSpaces(s);
  97.     CheckHeader(fGroupsET, s, messageEmptyGroups);
  98.     fPostArticleInfo->fNewsGroups = s;
  99.  
  100.     fDistributionET->GetText(s);
  101.     StripSpaces(s);
  102.     CheckHeader(fDistributionET, s, messageEmptyDistribution);
  103.     fPostArticleInfo->fDistribution = s;
  104.  
  105.     fPostArticleInfo->fAddSignatureChoice = fAddSignatureCB->IsOn();
  106.  
  107.     fPostArticleInfo->ShowPostArticleWindow();
  108.     fPostArticleInfo->MakeFile();
  109.     fPostArticleInfo->LaunchEditor();
  110. }
  111.  
  112. void TEditArticleToPostDialogView::CheckHeader(
  113.         TEditText *fET, const CStr255 &text, long emptyMessage)
  114. {
  115.     if (text == "")
  116.         Failure(errBadHeader, emptyMessage);
  117.     for (short i = 1; i <= text.Length(); i++)
  118.     {
  119.         char ch = text[i];
  120.         if (ch < 32 || ch > 126)
  121.         {
  122.             fET->SetSelection(i - 1, i, kRedraw);
  123.             Failure(errBadHeader, messageInvalidHeaderChar);
  124.         }
  125.     }
  126. }
  127.  
  128. //------------------------------------------------------------------------------
  129. TPostArticleDialogView::TPostArticleDialogView()
  130. {
  131. }
  132.  
  133.  
  134. pascal void TPostArticleDialogView::Initialize()
  135. {
  136.     inherited::Initialize();
  137.     fSubjectET = nil;
  138.     fSubjectST = nil;
  139.     fAddSignatureCB = nil;
  140.     fMoveToTrashCB = nil;
  141.     fPostArticleInfo = nil;
  142. }
  143.  
  144. pascal void TPostArticleDialogView::ReadFields(TStream *aStream)
  145. {
  146.     inherited::ReadFields(aStream);
  147. }
  148.  
  149. pascal void TPostArticleDialogView::Free()
  150. {
  151.     fPostArticleInfo = nil;
  152.     inherited::Free();
  153. }
  154.  
  155. void TPostArticleDialogView::SetInfo(PPostArticleInfo *info)
  156. {
  157.     fPostArticleInfo = info;
  158.  
  159.     fSubjectET = (TEditText*) FindSubView('Subj');
  160.     fSubjectST = (TStaticText*) FindSubView('SUBS');
  161.  
  162.     Boolean editHeaders = fPostArticleInfo->fEditHeaders;
  163.     fSubjectST->SetEnable(editHeaders);
  164.     fSubjectET->Show(!editHeaders, kRedraw);
  165.     fSubjectET->SetEnable(!editHeaders);
  166.     fSubjectST->Show(editHeaders, kRedraw);
  167.     if (editHeaders)
  168.         fSubjectET->Locate(VPoint(1000, 1000), kRedraw);
  169.     else
  170.         fSubjectST->Locate(VPoint(1000, 1000), kRedraw);
  171.     CStr255 subject(fPostArticleInfo->fSubject);
  172.     if (editHeaders)
  173.         fSubjectST->SetText(subject, kRedraw);
  174.     else
  175.         fSubjectET->SetText(subject, kRedraw);
  176.     
  177.     fAddSignatureCB = (TCheckBox*) FindSubView('AdSi');
  178.     fAddSignatureCB->Show(!fPostArticleInfo->fEditSignature, kRedraw);    
  179.     fAddSignatureCB->SetEnable(!fPostArticleInfo->fEditSignature);    
  180.     fAddSignatureCB->SetState(fPostArticleInfo->fAddSignatureChoice, kRedraw);    
  181.  
  182.     fMoveToTrashCB = (TCheckBox*) FindSubView('PoTr');
  183.     fMoveToTrashCB->SetState(fPostArticleInfo->fTrashDiskCopyAfterPost, kRedraw);    
  184. }
  185.  
  186. pascal void TPostArticleDialogView::DoEvent(EventNumber eventNumber, 
  187.                                 TEventHandler *source, TEvent *event)
  188. {
  189.     CStr255 s;
  190.     if (eventNumber == mCancelHit || eventNumber == mCancelKey)
  191.     {
  192.         fPostArticleInfo->Cancel();
  193.         return;
  194.     }
  195.     if (source && source->fIdentifier == 'Edit')
  196.     {
  197.             fPostArticleInfo->LaunchEditor();
  198.             return;
  199.     }
  200.     if (source && source->fIdentifier == 'Post')
  201.     {
  202.         if (fPostArticleInfo->fEditHeaders)
  203.             fSubjectST->GetText(s);
  204.         else
  205.             fSubjectET->GetText(s);
  206.         if (!fPostArticleInfo->fEditSignature)
  207.             fPostArticleInfo->fAddSignatureChoice = fAddSignatureCB->IsOn();
  208.         fPostArticleInfo->fSubject = s;
  209.         fPostArticleInfo->fTrashDiskCopyAfterPost = fMoveToTrashCB->IsOn();
  210.         fPostArticleInfo->DoPostArticle();
  211.         return;
  212.     }
  213.     inherited::DoEvent(eventNumber, source, event);
  214. }
  215.